RUN: llvm-readobj -h %p/Inputs/macho-universal.x86_64.i386 \
RUN: | FileCheck %s -check-prefix MULTIHEADER

RUN: llvm-readobj --sections %p/Inputs/macho-universal.x86_64.i386 \
RUN: | FileCheck %s -check-prefix MULTISECTIONS

RUN: llvm-readobj -h %p/Inputs/macho-universal-archive.x86_64.i386 \
RUN: | FileCheck %s -check-prefix MULTIHEADER-ARCHIVE \
RUN:                -DARFILE="%p/Inputs/macho-universal-archive.x86_64.i386"

RUN: llvm-readobj --sections %p/Inputs/macho-universal-archive.x86_64.i386 \
RUN: | FileCheck %s -check-prefix MULTISECTIONS-ARCHIVE \
RUN:                -DARFILE="%p/Inputs/macho-universal-archive.x86_64.i386"

MULTIHEADER: Format: Mach-O 64-bit x86-64
MULTIHEADER: Arch: x86_64
MULTIHEADER: AddressSize: 64bit
MULTIHEADER: MachHeader {
MULTIHEADER:   Magic: Magic64 (0xFEEDFACF)
MULTIHEADER:   CpuType: X86-64 (0x1000007)
MULTIHEADER:   CpuSubType: CPU_SUBTYPE_X86_64_ALL (0x3)
MULTIHEADER:   FileType: Executable (0x2)
MULTIHEADER:   NumOfLoadCommands: 16
MULTIHEADER:   SizeOfLoadCommands: 880
MULTIHEADER:   Flags [ (0x200085)
MULTIHEADER:     MH_DYLDLINK (0x4)
MULTIHEADER:     MH_NOUNDEFS (0x1)
MULTIHEADER:     MH_PIE (0x200000)
MULTIHEADER:     MH_TWOLEVEL (0x80)
MULTIHEADER:   ]
MULTIHEADER:   Reserved: 0x0
MULTIHEADER: }

MULTIHEADER: Format: Mach-O 32-bit i386
MULTIHEADER: Arch: i386
MULTIHEADER: AddressSize: 32bit
MULTIHEADER: MachHeader {
MULTIHEADER:   Magic: Magic (0xFEEDFACE)
MULTIHEADER:   CpuType: X86 (0x7)
MULTIHEADER:   CpuSubType: CPU_SUBTYPE_I386_ALL (0x3)
MULTIHEADER:   FileType: Executable (0x2)
MULTIHEADER:   NumOfLoadCommands: 16
MULTIHEADER:   SizeOfLoadCommands: 716
MULTIHEADER:   Flags [ (0x1200085)
MULTIHEADER:     MH_DYLDLINK (0x4)
MULTIHEADER:     MH_NOUNDEFS (0x1)
MULTIHEADER:     MH_NO_HEAP_EXECUTION (0x1000000)
MULTIHEADER:     MH_PIE (0x200000)
MULTIHEADER:     MH_TWOLEVEL (0x80)
MULTIHEADER:   ]
MULTIHEADER: }



MULTISECTIONS: Format: Mach-O 64-bit x86-64
MULTISECTIONS: Arch: x86_64
MULTISECTIONS: AddressSize: 64bit
MULTISECTIONS: Sections [
MULTISECTIONS:   Section {
MULTISECTIONS:     Index: 0
MULTISECTIONS:     Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS:     Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS:     Address: 0x100000F60
MULTISECTIONS:     Size: 0x12
MULTISECTIONS:     Offset: 3936
MULTISECTIONS:     Alignment: 4
MULTISECTIONS:     RelocationOffset: 0x0
MULTISECTIONS:     RelocationCount: 0
MULTISECTIONS:     Type: Regular (0x0)
MULTISECTIONS:     Attributes [ (0x800004)
MULTISECTIONS:       PureInstructions (0x800000)
MULTISECTIONS:       SomeInstructions (0x4)
MULTISECTIONS:     ]
MULTISECTIONS:     Reserved1: 0x0
MULTISECTIONS:     Reserved2: 0x0
MULTISECTIONS:   }
MULTISECTIONS:   Section {
MULTISECTIONS:     Index: 1
MULTISECTIONS:     Name: __unwind_info (5F 5F 75 6E 77 69 6E 64 5F 69 6E 66 6F 00 00 00)
MULTISECTIONS:     Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS:     Address: 0x100000F72
MULTISECTIONS:     Size: 0x48
MULTISECTIONS:     Offset: 3954
MULTISECTIONS:     Alignment: 0
MULTISECTIONS:     RelocationOffset: 0x0
MULTISECTIONS:     RelocationCount: 0
MULTISECTIONS:     Type: Regular (0x0)
MULTISECTIONS:     Attributes [ (0x0)
MULTISECTIONS:     ]
MULTISECTIONS:     Reserved1: 0x0
MULTISECTIONS:     Reserved2: 0x0
MULTISECTIONS:   }
MULTISECTIONS:   Section {
MULTISECTIONS:     Index: 2
MULTISECTIONS:     Name: __eh_frame (5F 5F 65 68 5F 66 72 61 6D 65 00 00 00 00 00 00)
MULTISECTIONS:     Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS:     Address: 0x100000FC0
MULTISECTIONS:     Size: 0x40
MULTISECTIONS:     Offset: 4032
MULTISECTIONS:     Alignment: 3
MULTISECTIONS:     RelocationOffset: 0x0
MULTISECTIONS:     RelocationCount: 0
MULTISECTIONS:     Type: Regular (0x0)
MULTISECTIONS:     Attributes [ (0x0)
MULTISECTIONS:     ]
MULTISECTIONS:     Reserved1: 0x0
MULTISECTIONS:     Reserved2: 0x0
MULTISECTIONS:   }
MULTISECTIONS: ]

MULTISECTIONS: Format: Mach-O 32-bit i386
MULTISECTIONS: Arch: i386
MULTISECTIONS: AddressSize: 32bit
MULTISECTIONS: Sections [
MULTISECTIONS:   Section {
MULTISECTIONS:     Index: 0
MULTISECTIONS:     Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS:     Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS:     Address: 0x1FA0
MULTISECTIONS:     Size: 0x15
MULTISECTIONS:     Offset: 4000
MULTISECTIONS:     Alignment: 4
MULTISECTIONS:     RelocationOffset: 0x0
MULTISECTIONS:     RelocationCount: 0
MULTISECTIONS:     Type: Regular (0x0)
MULTISECTIONS:     Attributes [ (0x800004)
MULTISECTIONS:       PureInstructions (0x800000)
MULTISECTIONS:       SomeInstructions (0x4)
MULTISECTIONS:     ]
MULTISECTIONS:     Reserved1: 0x0
MULTISECTIONS:     Reserved2: 0x0
MULTISECTIONS:   }
MULTISECTIONS:   Section {
MULTISECTIONS:     Index: 1
MULTISECTIONS:     Name: __unwind_info (5F 5F 75 6E 77 69 6E 64 5F 69 6E 66 6F 00 00 00)
MULTISECTIONS:     Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS:     Address: 0x1FB5
MULTISECTIONS:     Size: 0x48
MULTISECTIONS:     Offset: 4021
MULTISECTIONS:     Alignment: 0
MULTISECTIONS:     RelocationOffset: 0x0
MULTISECTIONS:     RelocationCount: 0
MULTISECTIONS:     Type: Regular (0x0)
MULTISECTIONS:     Attributes [ (0x0)
MULTISECTIONS:     ]
MULTISECTIONS:     Reserved1: 0x0
MULTISECTIONS:     Reserved2: 0x0
MULTISECTIONS:   }
MULTISECTIONS: ]

MULTIHEADER-ARCHIVE: {{^$}}
MULTIHEADER-ARCHIVE-NEXT: File: [[ARFILE]](hello.o)
MULTIHEADER-ARCHIVE: Format: Mach-O 64-bit x86-64
MULTIHEADER-ARCHIVE: Arch: x86_64
MULTIHEADER-ARCHIVE: AddressSize: 64bit
MULTIHEADER-ARCHIVE: MachHeader {
MULTIHEADER-ARCHIVE:   Magic: Magic64 (0xFEEDFACF)
MULTIHEADER-ARCHIVE:   CpuType: X86-64 (0x1000007)
MULTIHEADER-ARCHIVE:   CpuSubType: CPU_SUBTYPE_X86_64_ALL (0x3)
MULTIHEADER-ARCHIVE:   FileType: Relocatable (0x1)
MULTIHEADER-ARCHIVE:   NumOfLoadCommands: 3
MULTIHEADER-ARCHIVE:   SizeOfLoadCommands: 496
MULTIHEADER-ARCHIVE:   Flags [ (0x2000)
MULTIHEADER-ARCHIVE:     MH_SUBSECTIONS_VIA_SYMBOLS (0x2000)
MULTIHEADER-ARCHIVE:   ]
MULTIHEADER-ARCHIVE:   Reserved: 0x0
MULTIHEADER-ARCHIVE: }
MULTIHEADER-ARCHIVE-EMPTY:
MULTIHEADER-ARCHIVE-NEXT: File: [[ARFILE]](foo.o)
MULTIHEADER-ARCHIVE: Format: Mach-O 32-bit i386
MULTIHEADER-ARCHIVE: Arch: i386
MULTIHEADER-ARCHIVE: AddressSize: 32bit
MULTIHEADER-ARCHIVE: MachHeader {
MULTIHEADER-ARCHIVE:   Magic: Magic (0xFEEDFACE)
MULTIHEADER-ARCHIVE:   CpuType: X86 (0x7)
MULTIHEADER-ARCHIVE:   CpuSubType: CPU_SUBTYPE_I386_ALL (0x3)
MULTIHEADER-ARCHIVE:   FileType: Relocatable (0x1)
MULTIHEADER-ARCHIVE:   NumOfLoadCommands: 3
MULTIHEADER-ARCHIVE:   SizeOfLoadCommands: 296
MULTIHEADER-ARCHIVE:   Flags [ (0x2000)
MULTIHEADER-ARCHIVE:     MH_SUBSECTIONS_VIA_SYMBOLS (0x2000)
MULTIHEADER-ARCHIVE:   ]
MULTIHEADER-ARCHIVE: }

MULTISECTIONS-ARCHIVE: {{^$}}
MULTISECTIONS-ARCHIVE-NEXT: File: [[ARFILE]](hello.o)
MULTISECTIONS-ARCHIVE: Format: Mach-O 64-bit x86-64
MULTISECTIONS-ARCHIVE: Arch: x86_64
MULTISECTIONS-ARCHIVE: AddressSize: 64bit
MULTISECTIONS-ARCHIVE: Sections [
MULTISECTIONS-ARCHIVE:   Section {
MULTISECTIONS-ARCHIVE:     Index: 0
MULTISECTIONS-ARCHIVE:     Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS-ARCHIVE:     Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS-ARCHIVE:     Address: 0x0
MULTISECTIONS-ARCHIVE:     Size: 0x3B
MULTISECTIONS-ARCHIVE:     Offset: 528
MULTISECTIONS-ARCHIVE:     Alignment: 4
MULTISECTIONS-ARCHIVE:     RelocationOffset: 0x2B8
MULTISECTIONS-ARCHIVE:     RelocationCount: 2
MULTISECTIONS-ARCHIVE:     Type: Regular (0x0)
MULTISECTIONS-ARCHIVE:     Attributes [ (0x800004)
MULTISECTIONS-ARCHIVE:       PureInstructions (0x800000)
MULTISECTIONS-ARCHIVE:       SomeInstructions (0x4)
MULTISECTIONS-ARCHIVE:     ]
MULTISECTIONS-ARCHIVE:     Reserved1: 0x0
MULTISECTIONS-ARCHIVE:     Reserved2: 0x0
MULTISECTIONS-ARCHIVE:   }
MULTISECTIONS-ARCHIVE:   Section {
MULTISECTIONS-ARCHIVE:     Index: 1
MULTISECTIONS-ARCHIVE:     Name: __cstring (5F 5F 63 73 74 72 69 6E 67 00 00 00 00 00 00 00)
MULTISECTIONS-ARCHIVE:     Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS-ARCHIVE:     Address: 0x3B
MULTISECTIONS-ARCHIVE:     Size: 0xD
MULTISECTIONS-ARCHIVE:     Offset: 587
MULTISECTIONS-ARCHIVE:     Alignment: 0
MULTISECTIONS-ARCHIVE:     RelocationOffset: 0x0
MULTISECTIONS-ARCHIVE:     RelocationCount: 0
MULTISECTIONS-ARCHIVE:     Type: CStringLiterals (0x2)
MULTISECTIONS-ARCHIVE:     Attributes [ (0x0)
MULTISECTIONS-ARCHIVE:     ]
MULTISECTIONS-ARCHIVE:     Reserved1: 0x0
MULTISECTIONS-ARCHIVE:     Reserved2: 0x0
MULTISECTIONS-ARCHIVE:   }
MULTISECTIONS-ARCHIVE:   Section {
MULTISECTIONS-ARCHIVE:     Index: 2
MULTISECTIONS-ARCHIVE:     Name: __compact_unwind (5F 5F 63 6F 6D 70 61 63 74 5F 75 6E 77 69 6E 64)
MULTISECTIONS-ARCHIVE:     Segment: __LD (5F 5F 4C 44 00 00 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS-ARCHIVE:     Address: 0x48
MULTISECTIONS-ARCHIVE:     Size: 0x20
MULTISECTIONS-ARCHIVE:     Offset: 600
MULTISECTIONS-ARCHIVE:     Alignment: 3
MULTISECTIONS-ARCHIVE:     RelocationOffset: 0x2C8
MULTISECTIONS-ARCHIVE:     RelocationCount: 1
MULTISECTIONS-ARCHIVE:     Type: Regular (0x0)
MULTISECTIONS-ARCHIVE:     Attributes [ (0x20000)
MULTISECTIONS-ARCHIVE:       Debug (0x20000)
MULTISECTIONS-ARCHIVE:     ]
MULTISECTIONS-ARCHIVE:     Reserved1: 0x0
MULTISECTIONS-ARCHIVE:     Reserved2: 0x0
MULTISECTIONS-ARCHIVE:   }
MULTISECTIONS-ARCHIVE:   Section {
MULTISECTIONS-ARCHIVE:     Index: 3
MULTISECTIONS-ARCHIVE:     Name: __eh_frame (5F 5F 65 68 5F 66 72 61 6D 65 00 00 00 00 00 00)
MULTISECTIONS-ARCHIVE:     Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS-ARCHIVE:     Address: 0x68
MULTISECTIONS-ARCHIVE:     Size: 0x40
MULTISECTIONS-ARCHIVE:     Offset: 632
MULTISECTIONS-ARCHIVE:     Alignment: 3
MULTISECTIONS-ARCHIVE:     RelocationOffset: 0x0
MULTISECTIONS-ARCHIVE:     RelocationCount: 0
MULTISECTIONS-ARCHIVE:     Type: Coalesced (0xB)
MULTISECTIONS-ARCHIVE:     Attributes [ (0x680000)
MULTISECTIONS-ARCHIVE:       LiveSupport (0x80000)
MULTISECTIONS-ARCHIVE:       NoTOC (0x400000)
MULTISECTIONS-ARCHIVE:       StripStaticSyms (0x200000)
MULTISECTIONS-ARCHIVE:     ]
MULTISECTIONS-ARCHIVE:     Reserved1: 0x0
MULTISECTIONS-ARCHIVE:     Reserved2: 0x0
MULTISECTIONS-ARCHIVE:   }
MULTISECTIONS-ARCHIVE: ]
MULTISECTIONS-ARCHIVE-EMPTY:
MULTISECTIONS-ARCHIVE-NEXT: File: [[ARFILE]](foo.o)
MULTISECTIONS-ARCHIVE: Format: Mach-O 32-bit i386
MULTISECTIONS-ARCHIVE: Arch: i386
MULTISECTIONS-ARCHIVE: AddressSize: 32bit
MULTISECTIONS-ARCHIVE: Sections [
MULTISECTIONS-ARCHIVE:   Section {
MULTISECTIONS-ARCHIVE:     Index: 0
MULTISECTIONS-ARCHIVE:     Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS-ARCHIVE:     Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS-ARCHIVE:     Address: 0x0
MULTISECTIONS-ARCHIVE:     Size: 0x5
MULTISECTIONS-ARCHIVE:     Offset: 324
MULTISECTIONS-ARCHIVE:     Alignment: 4
MULTISECTIONS-ARCHIVE:     RelocationOffset: 0x0
MULTISECTIONS-ARCHIVE:     RelocationCount: 0
MULTISECTIONS-ARCHIVE:     Type: Regular (0x0)
MULTISECTIONS-ARCHIVE:     Attributes [ (0x800004)
MULTISECTIONS-ARCHIVE:       PureInstructions (0x800000)
MULTISECTIONS-ARCHIVE:       SomeInstructions (0x4)
MULTISECTIONS-ARCHIVE:     ]
MULTISECTIONS-ARCHIVE:     Reserved1: 0x0
MULTISECTIONS-ARCHIVE:     Reserved2: 0x0
MULTISECTIONS-ARCHIVE:   }
MULTISECTIONS-ARCHIVE:   Section {
MULTISECTIONS-ARCHIVE:     Index: 1
MULTISECTIONS-ARCHIVE:     Name: __data (5F 5F 64 61 74 61 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS-ARCHIVE:     Segment: __DATA (5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00)
MULTISECTIONS-ARCHIVE:     Address: 0x8
MULTISECTIONS-ARCHIVE:     Size: 0x4
MULTISECTIONS-ARCHIVE:     Offset: 332
MULTISECTIONS-ARCHIVE:     Alignment: 2
MULTISECTIONS-ARCHIVE:     RelocationOffset: 0x0
MULTISECTIONS-ARCHIVE:     RelocationCount: 0
MULTISECTIONS-ARCHIVE:     Type: Regular (0x0)
MULTISECTIONS-ARCHIVE:     Attributes [ (0x0)
MULTISECTIONS-ARCHIVE:     ]
MULTISECTIONS-ARCHIVE:     Reserved1: 0x0
MULTISECTIONS-ARCHIVE:     Reserved2: 0x0
MULTISECTIONS-ARCHIVE:   }
MULTISECTIONS-ARCHIVE: ]

